package ufs.dcomp.mgemeos.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import ufs.dcomp.mgemeos.perfis.Organizador;

/**
 *
 * @author Luiz Marcus
 * @modificação 14/02/11
 */
public class OrganizadorDAO implements interface_dao.IOrganizador{

    private static String inserir = "insert into organizador (nome, telefone, cpf_cnpj, login, senha, email,idEvento) values (?,?,?,?,?,?,?)";
    private static String atualizar = "update organizador set nome = ?,telefone = ?, cpf_cnpj = ?, login =?, senha =?, email=?, idEvento=? "
            + "where idOrganizador=?";
    private static String obter = "select * from organizador where idOrganizador=? ";
    private static String obter_porlogin = "select * from organizador where login = ? ";
    private static String obter_todos = "select * from organizador ORDER BY nome";
    private static String delete = "delete from organizador where idOrganizador=? ";


    @Override
    public boolean atualizarOrganizador(Organizador org) {
        Conexao conexao = new Conexao();
        Connection con = conexao.getConnection();
        PreparedStatement pst;
        try {
            pst = con.prepareStatement(atualizar);
            pst.setString(1, org.getNome());
            pst.setString(2, org.getTelefone());
            pst.setString(3, org.getCpf_cnpj());
            pst.setString(4, org.getLogin());
            pst.setString(5, org.getSenha());
            pst.setString(6, org.getEmail());
            pst.setInt(7, org.getIdEvento());
            pst.setInt(8, org.getIdOrganizador());

            pst.executeUpdate();
            pst.close();
            con.close();
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }    

    @Override
    public Organizador obterOrganizador(int id) {
        Organizador org = null;
        Conexao conexao = new Conexao();
        Connection con = conexao.getConnection();
        PreparedStatement pst;
        try {
            pst = con.prepareStatement(obter);
            pst.setInt(1, id);
            ResultSet rs = pst.executeQuery();
            if (rs.next()) {

                org = new Organizador();
                org.setIdOrganizador(rs.getInt(1));
                org.setNome(rs.getString(2));
                org.setTelefone(rs.getString(3));
                org.setCpf_cnpj(rs.getString(4));
                org.setLogin(rs.getString(5));
                org.setSenha(rs.getString(6));
                org.setEmail(rs.getString(7));
                org.setIdEvento(rs.getInt(8));
                //org.setAtividades(AtividadeDAO.obter_Atividades_Organizador(rs.getInt(1)));

            }
            rs.close();
            pst.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return org;
    }

    @Override
    public Organizador obterOrganizador_por_Login(String login) {
        Organizador org = null;
        Conexao conexao = new Conexao();
        Connection con = conexao.getConnection();
        PreparedStatement pst;
        try {
            pst = con.prepareStatement(obter_porlogin);
            pst.setString(1, login);
            ResultSet rs = pst.executeQuery();
            if (rs.next()) {

                org = new Organizador();
                org.setIdOrganizador(rs.getInt(1));
                org.setNome(rs.getString(2));
                org.setTelefone(rs.getString(3));
                org.setCpf_cnpj(rs.getString(4));
                org.setLogin(rs.getString(5));
                org.setSenha(rs.getString(6));
                org.setEmail(rs.getString(7));
                org.setIdEvento(rs.getInt(8));
                //org.setAtividades(AtividadeDAO.obter_Atividades_Organizador(rs.getInt(1)));

            }
            rs.close();
            pst.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return org;
    }


    @Override
    public boolean inserirOrganizador(Organizador org) {
        Conexao conexao = new Conexao();
        Connection con = conexao.getConnection();
        PreparedStatement pst;

        Organizador org2 = obterOrganizador(org.getIdOrganizador());

        if (org2 == null) {
            try {
                pst = con.prepareStatement(inserir);
                pst.setString(1, org.getNome());
                pst.setString(2, org.getTelefone());
                pst.setString(3, org.getCpf_cnpj());
                pst.setString(4, org.getLogin());
                pst.setString(5, org.getSenha());
                pst.setString(6, org.getEmail());
                pst.setInt(7, org.getIdEvento());
                pst.execute();
                pst.close();
                con.close();
                return true;
            } catch (SQLException e) {
                e.printStackTrace();
                return false;
            }
        } else {
            return false;
        }
    }

    @Override
    public boolean deletarOrganizador(int id) {
        Conexao conexao = new Conexao();
        Connection con = conexao.getConnection();
        PreparedStatement pst;

        Organizador org2 = obterOrganizador(id);

        if (org2 != null) {
            try {
                pst = con.prepareStatement(delete);
                pst.setInt(1, id);
                pst.execute();
                pst.close();
                con.close();
                return true;
            } catch (SQLException e) {
                e.printStackTrace();
                return false;
            }
        } else {
            return false;
        }
    }

    @Override
    public ArrayList<Organizador> obterOrganizador_todos() {
        Organizador org = null;
        ArrayList<Organizador> lista_organizadores = new ArrayList<Organizador>();
        Conexao conexao = new Conexao();
        Connection con = conexao.getConnection();
        PreparedStatement pst;
        try {
            pst = con.prepareStatement(obter_todos);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {

                org = new Organizador();
                org.setIdOrganizador(rs.getInt(1));
                org.setNome(rs.getString(2));
                org.setTelefone(rs.getString(3));
                org.setCpf_cnpj(rs.getString(4));
                org.setLogin(rs.getString(5));
                org.setSenha(rs.getString(6));
                org.setEmail(rs.getString(7));
                org.setIdEvento(rs.getInt(8));
                //org.setAtividades(AtividadeDAO.obter_Atividades_Organizador(rs.getInt(1)));
                lista_organizadores.add(org);
            }
            rs.close();
            pst.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return lista_organizadores;
    }
    
    

}
